COLOR WICS−2000 Ver.2.0 ――――――――――――――――――――――――――――――――――――――― I/O 1983年 2月号掲載 MZ−2000 マシン語 COLOR WICS   01500H−03BFFH S:01500H TS−2000用チェックサム   0A000H−0A1FFH S:0A000H 起動方法 TS−2000を起動 L *2本目はチェック・サムプログラムです ――――――――――――――――――――――――――――――――――――――― 今回はMZ−2000用 Color WICS Ver2.0を発表します。 ・――――――――――――――――――・ |_                _|   \ WICSを初めて知る方へ /    ・――――――――――――・ WICSとは、一言でいえばコンパイラを備えた整数型BASICです。 現在ではほとんどのパーコンに 実数型BASICインタープリタが載っています。 数値計算では非常に便利ですが、 インタープリタは、特にその実行速度という点で、 機械制御やグラフィック処理などの 高速さを要求される仕事には不向きです。 それに対し、マシン語は非常に高速な処理が可能ですが、 処理の内容が複雑になるにつれ、 プログラムの作成やデバッグにかかる手間暇が莫大なものになります。 では、マシン語のプログラムが BASIC並みの手軽さで作れないものでしょうか。 これを実現したのがコンパイラです。 BASICのような人間にわかりやすい言語でプログラムを書いて、 それをコンパイラにかけて マシン語にしてから実行しようというわけです。 プログラムの作成とデバッグをインタープリタで行ない、 完成したところでコンパイルすれば、 プログラムの開発も、その実行時間も短縮することができます。 文法的にコンパチブルなインタープリタと コンパイラを合わせ持つ新システム、 これがWICSなのです。  _______________ |_             _|  _|  システムの概略  |_ |_______________| WICSは大きく分けて、インタープリタ、コンパイラ、 マシン語モニタを含んだランタイム・パッケージの 3つの部分に分かれています。 ランタイム・パッケージはメモリ常駐になっており、 インタープリタとコンパイラ、 それにユーザーの作制したコンパイル・オブジェクトは すべてこのパッケージに依存します。 WICSでのプログラム開発形態は、 かなリユーザーの自由になっていますが、 次のようなものが考えられます。 I)インタープリタのみによる開発。   WICSインタープリタ   (もちろんランタイム・パッケージを含む)のみを   使ってプログラムを作る場合です。   これは通常のBASICインタプリタを使うのとほとんど同じ感覚です。   実数演算はありませんが、実数型のBASICにくらべ   2〜3倍の速さを侍っています。   また、WICSテキスト・プログラムはメモリが許せば、   いくつでも置くことができます(TEXT命令で切り換えて使用)。 II)インタープリタとコンパイラを両方使う場合。   インタープリタとコンパイラはメモリ上に共存できるので、   両方ともメモリにロードしておいて、   インタープリタでプログラムを編集、デバッグして、   即、コンパイラにかけることができます。   また、コンパイルされたサブルーチンは、   インタープリタからコールすることも自由にできます。   このとき、サブルーチン内の変数名とインタープリタで使う変数名が   重複しても問題はありません。   サブルーチンヘの引数渡しはPUSH、POP命令 で行なうか、   あるいはメモリのフリーエリアに共通の配列をとって行ないます。   マシン語とのリンクも自由にできます   (ただし、インデックス・レジスタIX、IYはともに    ソフトウェア・スタックなので、破壊してはいけません)。 III)インタープリタを切り離す場合。   ユーザープログラムが大きくなって、   ユーザープログラムのオブジェクトを作る場所がなくなったときは、   インタープリタを切り離して、   インタープリタ本体のメモリ領域を   オブジェクト生成に使うことができます。   また、インタープリタ本体の代わりに、   そこにユーザーオブジェクトを置き、   ランタイム・パッケージと共にセーブすれば、   完令独立型オブジェクトを作ることもできます。   いずれの場合もインタープリタを切り離すと   テキスト・プログラムの編集はできなくなります。   特筆すべきことは、コンパイラがかなりのレベルまで   オブジェクトの最適化(生成コードの縮小と高速化)を行なうため、   ソース対オブジェクト比が1対0.6〜0.8程度にまで縮まり、   実行速度は1桁以上向上することです。   また、コンパイル速度は約 400行/分と高速です。  ―――――――――――――| (   文法上の特徴   |  ―――――――――――――| WICSの文法はBASICとかなり似ています。 なぜBASICの構造を選んだかというと、 BASICの文法が広く普及していることと、 BASICの制御構造が機械語で比較的実現しやすすいからです。 このことは、生成されるオブジェクトの効率を良くすることにもなります。 もしも、PASCALなどの言語構造を使うと、 ローカル変数の割り当てや手続き呼び出しの引数機構のために、 かなりのオーバー・ヘッドが生じてしまいます。 ただし、BASIC文法と異なる部分も多少あります。 というのは、 (1) 変数名は英字で始まる英数字(A〜Zと0〜9)からなる任意長で、    予約語(FORやGOSUBなど)で始まるものでなければ、    すべての文字を識別します。    すなわち、“HENSU” という名前の変数と、    “HENSUI”という名前の変数は区別して扱かわれます。 (2) 配列はBASICの配列と異なっていて、    ユーザーがメモリのフリーエリアに指定する形式で、    1バイト配列と2バイト配列があります。    いずれも配列の要素はメモリ番地と直接対応しているので、    メモリ操作ポインタとして使うこともできます    (機械語におけるインデックス・アドレッシングの考え方に似ています)。 (3) ダブル・クォーテーションで囲まれた1文字は、    文字定数として、整数値(その ASCIIコード)に変換されます。 (4) 演算子にOR、AND、XORがあり、    これによりビット操作を可能にします。 (5) その他、再帰呼び出しを可能にするPUSH、POP命令 があり、    FOR〜NEXT やGOSUB〜RETURN とは別の    独立のスタックを持たせているので、    引数をPUSHしたあとでサブルーチンをコールする方法が使えます。            (文法上の注意) (1)GOTO、GOSUB の飛び先行番号は必ず定数でなくてはいけません。 (2)ただし、マシン語を呼び出すCALLでは、   番地の代りに式や名前(変数)も使えます。 (3)FOR に対するNEXTはコンパイラにかけることを考えて、   必ず1対1で対応させること。   ネスティングは可能(スタックの許す限り)ですが、   途中からの飛び出しや飛び込みはコンパイラで走らせる場合、   暴走の原因、非構造化の始まりになります。        (WICSの扱える数値および変数) (1)変数  ●変数は英字(A〜Z)で始まり、英数字(A〜Z、0〜9)から   成る任意の文字列です。  ●変数名の長さは制限はありません。   また、変数名は全・文字を識別します。  ●ただし、予約語(FORやGOSUBなど)で始まる文字列は   変数とはみなしません。   予約語が変数名の途中から現われる場合はかまいません   (変数名とみなす)。  ●変数は−32768〜32767までの整数値をとることができます。   (2)配列(INDEX)  ●配列は、通常のBASICのDIM文 と異なり、   ユーザーがメモリのフリーエリア上に指定するようになっています。     2バイト配列:変数名(式)    2バイト配列は(変数の内容+式の値*2) のメモリ番地の    2バイト分の値に対応します。   1バイト配列:変数名〔式〕    1バイト配列は、(変数の内容+式の値) のメモリ番地の    1バイトの値に対応します。   WICSでは配列(INDEX)というのは   機械語のインデックス・アドレッシングに相当するもので、   直接的にメモリを操作できます。 (3)定数   i )10進定数:−32768〜32767の範囲の整数。   ii)16進定数:$0000〜$FFFF     (16進数は“$”をはじめに付ける)。   iii)文字定数:“A”のように、クォーテーション「”」でくくられた     1文字の ASCIIコード(整数値に変換される)。 (4)式    〈式〉:=〈項〉 〔〈演算子〉〈項〉〕   式は、項と2項演算子より成り立っています。  ●2項演算子を、優先順位の低い順に示します。  1)不等号、等号:>=、=>、<=、=<、=、<>、<、>  2)加減算   :+、-、OR  3)乗除算   :*、/、AND、XOR  ●( )を含む場合は、( )の中が最優先されます。  ●等号、不等号演算子は、左項<演算子>右項が成立すれば、   その値は1(真)で不成立の場合は、0(偽)の値をとります。  ●OR、AND、XORは、   左項と右項の値を16ビットの2進数値とみなして、   各ビットごとに、OR、AND、XORをそれぞれ行ない、   16ビットにまとめて値にするものです。 ■■■■■■ 予約されているコマンド、ステートメント、関数表 ■■■■■■■ <コマンド> ・―――――――――――――――――――――――――――――――――――――・ | コマンドは、インタープリタ・モードでしか使えません           | |(コンパイラでは無視されます)。                     | |★RUN〔〈行番号〉〕                          | | ●インタープリタ・プログラムを実行します。               | | ●行番号を省略すると、CLR を実行したのち、               | |  プログラムの始めから実行を開始します。                | | ●行番号を付けると、CLR を実行せすに、                 | |  指定された行番号からプログラムを実行します。             | |                                     | |★LIST〔〈行番号〉〕〔,〕〔〈行番号〉〕               | | ●プログラムを表示します。                       | | ・――――――――――――――――――――――・            | | | LIST……………………全行表示       |            | | | LISTm…………………m行のみ表示     |            | | | LISTm,………………m行以下表示     |            | | | LISTm,n……………m行よりn行まで表示 |            | | | LIST,n………………先頭よりn行まで表示 |            | | ・――――――――――――――――――――――・            | |                                     | | ●LIST実行中、[SPACE] を押している間、                 | |  表示を一時停止します。                        | |  また、[BREAK] で表示を中断します。                  | |                                     | |★DELETE〈行番号〉,〈行番号〉                   | | ●指定された範囲のプログラムを削除します。               | |                                     | |★VLIST                               | | ●使用された変数名とその値をすべて表示します。             | |  表示途中、[SPACE] を押している間、                  | |  表示を一時停止します。                        | |  また、[BREAK] で、表示を中断します。                 | |                                     | |★NEW                                 | | ●プログラムを消去します。                       | |                                     | |★LOAD〔”〈ファイル名〉”〕                     | | ●カセットに記録されているWICSのソース・プログラムを、       | |  TEXTエリアにロードします。                    | |                                     | | ●ファイル名を省略すると、最初に見つけたプログラムをロードします。   | |                                     | | ●ファイル名を入力すると、そのファイル名を見つけてロードします。    | |                                     | | ●オブジェクト・プログラムはそのままロードしスタート番地へ飛びます。  | |                                     | |★SAVE 〔”〈ファイル名〉”〕                    | | ●TEXTエリアにあるWICSのソース・プログラムを、         | |  ファイル名を付けてテープにセーブします。               | |                                     | | ●ファイル名は省略できます。                      | |                                     | |★VERIFY〔”〈ファイル名〉”〕                   | | ●カセットに記録されているWICSのソース・プログラムと、       | |  TEXTエリアにあるプログラムを比較します。             | |  もし、一致したら“OK!”を、                    | |  一致しなかったら“BAD”を表示します。               | |                                     | | ●ファイル名を省略すると、最初に見つけたプログラムと比較を行ないます。 | |                                     | |★SYSTEM                              | | ●現在、TEXTの格納されている                    | |  先頭番地、終了番地、メモリ・エンドを表示します。           | |                                     | |★APPEND〔”〈ファイル名〉”〕                   | | ●カセットに記録されているWICSのソース・プログラムを、       | |  TEXTエリアにあるプログラムにAPPENDします。         | |                                     | | ●ファイル名を省略すると、最初に見つけたプログラムをAPPENDします。| |                                     | | ●ただし、元のプログラムも、APPENDしたプログラムも        | |  行番号はそのままなので注意してください。               | |                                     | |★LIMIT 番地                            | | ●TEXTの格納される番地の上限を指定します。             | |                                     | | ●番地は、“$”の後に4桁の16進数を書きます。             | |                                     | |★TEXT番地                              | | ●TEXTの格納される先頭番地を指定します。              | | ●番地は、“$”の後に4桁の16進数を書きます。             | |                                     | | CLR                                 | | ●変数をすべてクリアします.                      | |                                     | ・―――――――――――――――――――――――――――――――――――――・ <ステートメント> ・―――――――――――――――――――――――――――――――――――――・ |★IF〈式〉THEN〈文〉                        | | ●式の値が真(0以外)のとき、THEN以下の文を実行します。        | |  THENは省略できます。                         | |                                     | |★/FOR〈変数〉=〈初期値〉TO〈最終値〉〔STEP〈変化幅〉〕    | | |  [ 繰り返すプログラム ]                      | | \NEXT〔〈変数〉〕                         | | ●変数に初期値が代入され、                       | |  FOT文 とNEXT文にはさまれたプログラムを繰り返し実行します。      | |  一度繰り返すと変数に変化幅が加えられ、                | |  その値が最終値を越えると繰り返すのを止め、              | |  NEXT文の次から実行を始めます。                    | |                                     | | ●変化幅が1のときは、STEP文を省略できます。              | |                                     | | ●NEXTの後の変数名は、                         | |  FOR で宣言したものと同じでなければなりません。            | |  ただし、省略することもできます。                   | |                                     | | ●STEPの値は正の値でなければなりません。                | |                                     | |★/REPEAT                             | | |  [ 繰り返すプログラム ]                      | | \UNTIL〈条件式〉                         | |                                     | | ●条件式の値が真(0でない)になるまで、                | |  REPEATとUNTIL にはさまれたプログラムを繰り返し実行します。      | |                                     | |★ON〈式〉GOTO〈行番号a〉,[〈行番号b〉,…,〈行番号n〉]   | | ●式の値が1であれば行番号aへ、                    | |  2であれば行番号bへというように                   | |  式の値の数にある行番号へとびます。                  | |  ただし、その値に該当する行番号が書かれていないときは、        | |  分岐せすに次の命令に行きます。                    | |                                     | | ON〈式〉GOSUB〈行番号a〉,[〈行番号b〉,…,〈行番号n〉〕  | | ●ON〜GOTOと同じように、                        | |  式の値の番目にある行番号をサブルーチン・コールします。        | |                                     | | GOTO〈行番号〉                           | | ●行番号に分岐します。                         | |                                     | | GOSUB〈行番号〉                          | | ●行番号をサブルーチン・コールします。                 | |                                     | | RETURN                              | | ●サブルーチンの終わりを示します。                   | |                                     | | ●RETURNを実行すると、                         | |  GOSUB でコールしたプログラム                     | |  (サブルーチンの呼び主)のGOSUB文 の次に戻ります。          | |                                     | |★REM                                 | | ●コメント行です。REM のあとの文字は実行されません。          | | ●「’」(シングル・クォーテーション)もREM と同じように使えます。   | |                                     | |★PRINT                               | | ●文字や数値を出力装置に出力します。                  | |  出力装置は通常はディスプレイが指定されます(PRMODE参照)。      | |                                     | | ●書式は次のようなものです。                      | | ・――――――――――――――――――――――――――――・      | | | /(スラッシュ)……改行を行なう               |      | | | "文字列"……文字列を出力               |      | | | 式……………式の値を定められた文字スペースで     |      | | |       右づめ出力する              |      | | | #2 式 ………式の値を16進数2桁で出力する       |      | | | #4 式 ………式の値を16進数4桁で出力する       |      | | | & 式 ………式の値の ASCIIコードとする文字を     |      | | |       出力する(1文字)            |      | | | ! 式…………式で示される番地に格納されている文字列を |      | | |       $0Dまで出力する             |      | | | % 式…………文字スペースを式の値に定める       |      | | | + 式…………式の値を0〜65535までの10進数       |      | | |       で(負の扱いをしないで)出力する     |      | | ・――――――――――――――――――――――――――――・      | | 以上の書式ぱ”,”(コンマ)で区切れば、                | | いくつでも並べることができます。                    | |                                     | |  注)文字スペースは次のようになります。                | | ・――――――――――――――――――――――――――――・      | | | PRINT%5 100[CR]                    |      | | |  100                         |      | | | ―――                        |      | | | 5文字                        |      | | ・――――――――――――――――――――――――――――・      | |  注)PRINT文 は最後に改行を行なわないので、              | |    改行したいときのみ、"/"(スラッシュ)を入れてください。         | |  注)%(10進出力のフォーマット)は、                 | |    次の%が出るまで有効です。                    | |    #2、#4は、1つの出力に対して有効で、               | |    次の出力は、10進出力となります。                 | |                                     | |★INPUT〈変数名〉〔,〈変数名〉〕…                 | | ●キーボードから数字を入力して、変数に代入していきます。        | |  数字は10進、および16進( "$"をはじめに入力)が可能です。       | |                                     | | ●WICSでは、文字列に対して、                    | |  BASICとは違う取り扱いをしているので、              | |  文字変数がありません。                        | |  よってINPUT A$などはできないので注意してください           | |  (このような場合には、LINPUTを使います)。              | |                                     | |★STOP                                | | ●プログラムの実行を中止して、中止された行番号を表示します。      | |                                     | |★END                                 | | ●プログラムの実行を終わります。                    | |                                     | |★MON                                 | | ●モニタに制御を移します。                       | |                                     | |★BYE                                 | | ●モニタ『TS−2000』に制御を移します。                | |                                     | |★CALL〈式〉                             | | ●式の値の番地にあるマシン語サブルーチンをコールします。        | |                                     | |★PUSH〈式〉〔,〈式〉〕…                      | | ●式の値を順次スタックに積みます。                   | |                                     | |★POP〈変数名〉〔,〈変数名〉〕…                   | | ●スタックに積まれた値を取り出し、順次、変数に代入します。       | |                                     | |★OUT〈I/O番地〉,〈式〉                      | | ●I/O番地に式の値を出力します(マシン語の OUT命令と同じ)。     | |                                     | | ●どちらも0〜255までの値で、                      | |  それを越えた場合は 256で割った余りがその値となります。        | |                                     | |★CURSOR〈式1〉,〈式2〉                     | | ●CRTディスプレイのカーソルX,Yの座標を              | |  式1と、式2で指定します。                      | |  式1は0〜79でX座標に、                       | |  式2は0〜24でY座標に代入されます。                 | |                                     | |★POKE〈式1〉,〈式2〉                       | | ●式1のアドレスに式2の値の下位バイトが代入されます          | |  (式1のアドレスの内容が式2の下位バイトの値となる)。        | |                                     | |★CURH〈式〉                             | | ●式の値(0〜79)をカーソルのX座標とします。             | |                                     | |★CURV〈式〉                             | | ●式の値(0〜24)をカーソルのY座標とします。             | |                                     | |★PLOT〈式X〉,〈式Y〉〔,〈式M〉,〈式C〉〕           | | ●式XをX座標(0〜639)、式YをY座標(0〜199)とし、         | |  式Mのモードで、式Cの色のドットをプロットします。          | |                                     | |  モード=0:式Cで指定されたカラーコードのドットをリセットします。  | |  モード=1:式Cで指定されたカラーコードのドットをセットします。   | |        重ね合わせモードです。                  | |  モード=2:式Cで指定されたカラーコードのドットを          | |        リバース(反転)します。                 | |  モード=3:式Cで指定されたカラーコードの色でドットをセットします。 | |        強制セット・モードです。                 | |                                     | | ●モードを省略すれば自動的にモード=3となり、             | |  カラーコードを省略すれば、                      | |  自動的にそのときのキャラクタの色になります。             | |  片方だけの省略も可能です。                      | |                                     | | ●以上のことはライン命令、サークル命令においても同様です。       | |                                     | |★LINPUT〈式〉                           | | ●1行入力を行ないます。                        | |  入力された行の文字を、                        | |  式で指定されるアドレスを行バッファの先頭として、           | |  文字を格納します。                          | |  また、文字列の最積には終了コードとして、               | |  $0Dを格納します。                          | |                                     | | ●式の値は、$C000〜以降にしてはいけません。              | |                                     | |★STA$(〈式〉,〈”文字列”〉)                   | | ●式のアドレスに文字列を ASCIIコードで格納します。           | |                                     | |★SPOKE〈式X〉,〈式Y〉,〈式Z〉                 | | ●CRTLの(X,Y) の座標に式Zのキャラクタを描きます。         | |  式Xは0〜79、式Yは0〜24、式Zは0〜255までです。          | |  式Zは ASCIIコードです。                       | |                                     | |★LINE〈式X〉,〈式Y〉,〈式X1〉,〈式Y1〉           | |     〔,〈式M〉,〈式C〉〕                    | | ●(X,Y) の座標を始点、(X1,Y1) の座標を終点とし、            | |  式Mのモードで、式Cの色で線を引きます。               | |                                     | | ●(X,Y),(X1,Y1)のうちどれか1つでも                  | |  画面からはみ出る場合、線は引かれません。               | |                                     | |★PUT@(式X〉,(式Y〉,(式X1〉,(式Y1〉,(式A),     | |   (式P)〔,〈式M〉〕                       | | ●G−RAMの座標(X,Y)と(X1,Y1)を頂点とする              | |  長方形の中に式Aで指定されるアドレスの配列データを、         | |  式P(1〜3)で指すG−RAMにビット・イメージとして表示します。  | |                                     | | ●式Mは表示モードで、                         | |   モード=0……リセット・モードです。                | |   モード=1……セット・モードです。                 | |   モード=2……リバース(反転)モードです。             | |                                     | | ●式Mを省略すれば自動的にモード=1となります。            | |                                     | |★GET@(式X),(式Y),(式X1),(式Y1),(式A),(式P) | | ●PUT@と逆の動作をします。                       | |  式Pで指定されるRAMの座標(X,Y)と(X1,Y1)を頂点とする        | |  長方形の中のビット・イメージを、                   | |  式Aで指定されるアドレスの配列に格納します。             | |                                     | | ●(X1-X)の値は8の倍数でなければなりません。              | |                                     | | ●PUT@、GET@においては、                        | |  3枚のG−RAMを別個に取り扱っています。              | |                                     | |★PAINT(式X),(式Y),(式C),〔(式K1),…〕       | | ●G−RAMの座標(X,Y) の点を含む、                  | |  指定された閉空間を塗りつぶします。                  | |                                     | | ●式Cで領域色を指定します。                      | |  「color WICS ver2.0」では              | |  中間色でペイントすることができます。                 | |  中間色の指定は次のようにします。                   | | ・――――――――――――――――――――――――――――・      | | |例:PAINT 320,100,$27                  |      | | | この例では(320,100) の点を含む閉空間を、      |      | | | 赤と白の中間色のピンクで塗りつぶします。       |      | | ・――――――――――――――――――――――――――――・      | |  中間色として黒を混ぜる場合、黒のカラーコードは8となります。     | |  ただし、下桁は0でも構いません。                   | |  上桁を0にすると下桁のみの単色で塗りつぶすものとみなします。     | | ・――――――――――――――――――――――――――――・      | | |例:PAINT 320,100,$82 (茶色で塗ります)        |      | | |  PAINT 320,100,$20 (茶色で塗ります)        |      | | |  PAINT 320,100,2  (赤色で塗ります)        |      | | ・――――――――――――――――――――――――――――・      | |                                     | | ●式Kにて境界色を指定します。境界色は7つまで指定できます。      | | ●境界色を省略すると黒以外の7色を境界色とみなします。         | | ●領域色も境界色とみなします。                     | | ●閉空間の図形が複雑すぎる場合は、                   | |  IYスタックがオーバーフローすることがあります。            | |                                     | |★BELL                                | | ●ベルを鳴らします。                          | |                                     | | MUSIC〈”音楽デー夕”〉                      | | ●音楽データを演奏します。                       | |                                     | |★SOUND〈式1〉,〈式2〉                      | | ●式1の高さの音を式2の長さだけ鳴らします。              | |                                     | | TEMPO〈式〉                            | | ●MUSIC文のテンポを指定します。                  | |                                     | |★PRMODE〈式〉                           | | ●PRINT出力の機器を指定します。                  | |  0   :CRTのみ出力                       | |  1   :PRINTERのみ出力                   | |  2   :CRT、PRINTER同時出力               | |  上記以外:どちらにも出力しない                    | |                                     | |★CIRCLE〈式X〉,〈式Y〉,〈式R〉〔,〈式M〉,〈式C〉〕    | | ●(X,Y) を中心とした半径R(X方向) の円を、               | |  式Mのモード、式Cの色で描きます。                  | |                                     | | ●X,Y,Rは両面をはみだした場合、両面に映る部分のみ描きます。    | |                                     | | ●サークル命令にモード=2(リバース) はありません。                | |                                     | |★GRAPH                               | | ●グラフィック画面の設定を行ないます。                 | |                                     | | ●書式は                                | |  In:G−RAMがセレクトされたとき、                 | |    CPUがアクセスできるRAMをページn(1〜3)に        | |    設定します。                           | |  On:画面に表示されるG−RAMを設定します。             | |    nは0〜15です。                         | |  C :CPUがアクセスできるRAMをクリアします。           | |  F :CPUがアクセスできるG−RAMを塗りつぶします。        | |  以上の書式は","(カンマ)で区切っていくつでも書くことができます。     | | ・――――――――――――――――――――――――――――・      | | | 例:GRAPH I1,C,O1,I2,F,O3               |      | | ・――――――――――――――――――――――――――――・      | |                                     | |★COLOR〈式C1〉,〈式C2〉                    | | ●キャラクタ・カラーおよびバックグランド・カラーの設定を行ないます。  | |                                     | | ●式C1にてキャラクタ・カラーおよびグラフィック・カラーとの      | |  プライオリティの設定を行ないます。                  | |                                     | | ●式C2にてバックグランド・カラーの設定を行ないます。         | |                                     | |★CLS〈式〉                              | | ●式で指定されたカラーコードのG−RAMをクリアします。        | |                                     | | ●式を省略した場合は、3ページともクリアします。            | |                                     | |★FULL〈式〉                             | | ●式で指定されたカラーコードのG−RAMを塗りつぶします。       | |                                     | | ●式を省略した場合は、3ページとも塗りつぶします。           | |                                     | |                                     | ・―――――――――――――――――――――――――――――――――――――・ <関数> ・―――――――――――――――――――――――――――――――――――――・ |★GET                                 | | ●キー入力が行なわれるまでカーソルを点滅し、              | |  キー入力があったとき、その ASCIIコードを値とします。         | |                                     | |★INKEY                               | | ●リアルタイム・キー入力です。                     | |  キーが押されていなければ0、                     | |  押されていれば、その ASCIIコードを値とします。            | |                                     | |★MOD(〈式1〉,〈式2〉)                      | | ●式1を式2で割った余りを値とします。                 | |                                     | |★ABS(〈式〉)                            | | ●式が負であれば正の数にします。正であれば、それを値とします。     | |                                     | |★RND(〈式〉)                            | | ●0〜(式の値−1)までの乱数値を値とします。             | |                                     | |★SGN(〈式〉)                            | | ●式の符号を値とします。                        | |   式が負であれば−1\                        | |   式が0であれば 0 | を値とします。                | |   式が正であれば 1/                        | |                                     | |★INP{〈式>}                            | | ●I/O番地の内容を値とします(機械語のIN命令と同じ)。       | |                                     | |★ADRS(〈変数〉)                          | | ●変数の格納されているアドレスを値とします。              | |                                     | |★PEEK(〈式〉)                           | | ●式のアドレスのメモリ内容を値とします。                | |                                     | | INC(〈変数〉)                           | | ●変数の値を1つ増加させ、その値を値とします。             | |                                     | |★DEC(〈変歓〉)                           | | ●変数の値を1つ減少させ、その値を値とします。             | |                                     | |★USR(〈式1〉,〈式2〉)                      | | ●式2をHLレジスタに代入した後、                    | |  式1のアドレスをマシン語サブルーチン・コールします。         | |                                     | | ●リターン時のHLレジスタの値を値とします。               | |                                     | | ●IX、IYレジスタは変化させてはいけません。               | |                                     | |★SPEEK(〈式X〉,〈式Y〉)                    | | ●CRT上の (X,Y)座標にあるキャラクタの ASCIIコードを         | |  値とします。                             | |                                     | |★CP$(〈式D、〈式2〉,〈式3〉)                  | | ●文字列比較関数、式1、式2はそれぞれ2組の文字列の先頭アドレスを   | |  指します。                              | |  式3は比較の最終コードを示し、                    | |  式1が指す文字列にこのコードが現れたとき比較を終わります。      | |  関数値は、一致のとき1、不一致のとき0を値とします。         | |                                     | |★CPI(〈式1〉,“文字列”)                     | | ●式1の値を先頭アドレスとする文字列と                 | |  「”」クォーテーション内の文字列と比較します。            | |  関数値は一致したとき1、不一致のとき0を値とします。         | |                                     | |★TIME関数                              | | ●内部のタイマの値を値とします。                    | |  タイマの値をセットする場合は、                    | |  TIME=式 とします。                          | |  TIMEの単位は秒です。                         | |                                     | | ●BASICのように、60進数にフォーマットされません。         | |                                     | |★D0T(〈式X〉,〈式Y〉)                      | | ●G−RAMの座標(X,Y) のドットの色を返します。            | | ●(X,Y) が画面からはみだした場合、8を返します。            | |                                     | |★SQR(〈式〉)                            | | ●式の平方根を返します。                        | |                                     | |                                     | ・―――――――――――――――――――――――――――――――――――――・ COLOR WICS ver.2.0のメモリ・マップ ・―――――――――――――――――――――――――――・ | | | $0000・-----------------・ -・WICSのプログラム | | | モニタ TS-2000 | |(インタプリタ、コンパイラ)を | | $1500|-----------------| |動かすために | | | ランタイム・パッケージ | |必ず必要です。 | | | グラフィック・ルーチン | | | | $2180|-----------------| |インタープリタの | | | マシン・スタック | |コールド・スタートは$1500 | | $2300|-----------------| |ホット・スタートは$1503 | | | PUSH・POPスタック | |番地です。 | | | (IYレジスタ) | | | | $2700|-----------------| -・ | | | | | | |WICSインタープリタ 本体| | | | | | | $3C00|-----------------| -・ | | | 変数ハッシュ表 | |インタプリタを使わない | | | | |場合、(コンパイル時など) | | $4000|-----------------| |ユーザーのワーク・エリア、 | | | 変数エリア | |または、コンパイラの | | | FOR,GOSUBスタック | |ワーク・エリアとして | | | (IXレジスタ) | |使えます。 | | $4800|-----------------| -・ | | | ユーザープログラム・ | | | | テキスト | | | |- - - - - - - - -| | | | | | | |ユーザープログラム・ | | | |オブジェクト,データなど| | | | | | | $D000|-----------------| -・ | | | | |コンパイルするときだけ | | | WICS コンパイラ | |必要です。 | | | | | | | $F000|-----------------| -・ | | | 空 き | | | ・-----------------・ | | | | ●ユーザーのテキスト・プログラムは通常$4800番地から始まります。 | ・―――――――――――――――――――――――――――・  ―――――――――――――― |_            _|  _\   おわりに    \ |______________| モニタTS−2000用のチェックサム・プログラムを付けておきます。 先の「Super BASE」と今回の『Color WICS』 のデバッグに役立ててください。 次回は『Color WICS Compiler』です。 楽しみに待っていてください。 なお、キャリーラボより 『Color WICS ver2.0』は、 定価 12,000円で発売されます。 『Color WICS MZ−2000』(定価 10,000円)を お買い上げのお客様は、差額分でお取り換えします。 直接キャリーラボまでご連絡ください。 【】参考文献 1)“Color WICSマニュアル”キャリーラボ(有) 2)“WICS”:I/O’81年10月号